Java文档翻译:拉链文件系统提供者,Zip File System Provider
爪哇标准版7(Java SE 7)中引入的拉链文件系统提供者,是一个自定义的文件系统提供者。拉链文件系统提供者,将一个zip (压缩包)或JAR(爪哇压缩包)文件当作一个文件系统来处理,并提供了处理该文件中的内容的功能。拉链文件系统提供者,可以创建多个文件系统——每个文件系统针对着一个zip 或JAR 文件。
妳的电脑上爪哇标准版7的安装目录的 demo/nio/zipfs/src.zip 文件 中包含着拉链文件系统提供者的源代码。 它还包含着一个 Demo.java 类,其中展示了如何使用拉链文件系统提供者。
妳可以使用 java.nio.file.FileSystems 类的工厂方法来创建一个新的拉链文件系统,或者引用到某个已有的拉链文件系统。使用 以下的某种方式来指定对应的zip 或JAR 文件的路径,以创建一个拉链文件系统:
•. 使用 java.net.JarURLConnection 类中定义的爪哇压缩包统一资源定位符(URL)语法
URI uri = URI.create("jar:file:/codeSamples/zipfs/zipfstest.zip");
FileSystem fs = FileSystems.newFileSystem(uri, env);
•.指定一个路径,并且利用自动文件类型检测功能
Path zipfile = Paths.get("/codeSamples/zipfs/zipfstest.zip");
FileSystem fs = FileSystems.newFileSystem(zipfile, env, null);
在传递给 FileSystems.newFileSystem 方法的 java.util.Map 对象中指定针对该拉链文件系统的配置选项。阅读 拉链文件系统属性 主题, 以了解与拉链文件系统相关的配置属性。
当妳拥有了拉链文件系统的一个实例之后, 就可以调用 java.nio.file.FileSystem 和 java.nio.file.Path 类的那些方法来进行相关的操作,例如:复制文件 、移动文件、重命名文件以及修改文件的属性。
以下代码示例,展示了,如何创建一个拉链文件系统,以及向该拉链文件系统中复制一个文件。
import java.util.*;
import java.net.URI;
import java.nio.file.Path;
import java.nio.file.*;
public class ZipFSPUser {
public static void main(String [] args) throws Throwable {
Map<String, String> env = new HashMap<>();
env.put("create", "true");
// 利用java.net.JarURLConnection 中定义的语法来定位到文件系统
URI uri = URI.create("jar:file:/codeSamples/zipfs/zipfstest.zip");
try (FileSystem zipfs = FileSystems.newFileSystem(uri, env)) {
Path externalTxtFile = Paths.get("/codeSamples/zipfs/SomeTextFile.txt");
Path pathInZipfile = zipfs.getPath("/SomeTextFile.txt");
// 向该 zip 文件中复制一个文件
Files.copy( externalTxtFile,pathInZipfile,
StandardCopyOption.REPLACE_EXISTING );
}
}
}
•. 开发 一个自定义文件系统提供者
•. 拉链文件系统属性
HxLauncher: Launch Android applications by voice commands